﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Woobao.VO;
using Woobao.DAO;

namespace Woobao.BO
{
    public class BOCampeonato
    {
        public void Inserir(VOCampeonato obj)
        {
            CampeonatoDAO dao = new CampeonatoDAO();
            dao.Inserir(obj);
        }

        public List<VOCampeonato> Consultar(VOCampeonato filtro)
        {
            CampeonatoDAO dao = new CampeonatoDAO();
            return dao.Consultar(filtro);
        }
        public void Atualizar (VOCampeonato obj)
        {
        CampeonatoDAO dao = new CampeonatoDAO();
            dao.Atualizar(obj);
        }
        public void Excluir(int cod)
        {
            CampeonatoDAO dao = new CampeonatoDAO();
            dao.Excluir(cod);
        }
        public VOCampeonato GerarTabela(int codigoCampeonato)
        {
            ParticipanteDAO daoParticipante = new ParticipanteDAO();
            JogoDAO daoJogo = new JogoDAO();
            CampeonatoDAO dao = new CampeonatoDAO();

            List<VOParticipantes> participantes = daoParticipante.ListarParticipantesDoCampeonato(codigoCampeonato);

            VOParticipantes p1, p2;

            int qtdJogos = participantes.Count() / 2;
            for (int i = 0; i < qtdJogos; i++)
            {
                Random r = new Random();
                int index = r.Next(0, participantes.Count() - 1);
                p1 = participantes[index];
                participantes.RemoveAt(index);

                index = r.Next(0, participantes.Count() - 1);
                p2 = participantes[index];
                participantes.RemoveAt(index);

                VOJogo jogo = new VOJogo();
                jogo.CodigoCampeonato = codigoCampeonato;
                jogo.CodigoFase = 1;
                jogo.CodigoParticipanteUm = p1.Codigo;
                jogo.CodigoParticipanteDois = p2.Codigo;
                jogo.NRJogo = i + 1;

                daoJogo.inserir(jogo);
            }

            VOCampeonato campeonato = dao.Consultar(new VOCampeonato() { Codigo = codigoCampeonato }).Single();
            campeonato.jogos = daoJogo.Consultar(new VOJogo() { CodigoCampeonato = codigoCampeonato }).ToList();

            return campeonato;
        }
    }
}
